Estoy usando amplificar appsync en mi aplicación electrónica y todo funciona, excepto los eventos en tiempo real, lo que significa que mi aplicación no recibe una señal cuando los datos cambian en la nube.
Sé que esto se debe a que se está ejecutando en Node, que es lo que busca amplificar (JS.browserOrNode), sin embargo, no sé cómo solucionarlo. ¿Puede alguien aconsejarme cómo puedo obtener las actualizaciones en tiempo real? Cuando consulto, solo obtiene los datos locales a menos que Datastore.stop() y Datastore.start() pero seguramente hay una mejor manera.
¡Gracias de antemano!
Gracias al equipo de amplificación en discord por este, en amplificar-js la lógica para la verificación del navegador frente al nodo es:
const browserOrNode = () => { const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null; return { isBrowser, isNode, }; };La lógica del almacén de datos determina si emitirá esa advertencia o iniciará las suscripciones:
if (isNode) { logger.warn( 'Realtime disabled when in a server-side environment' ); } else { //#region GraphQL Subscriptions [ // const ctlObservable: Observable<CONTROL_MSG> ctlSubsObservable, // const dataObservable: Observable<[TransformerMutationType, SchemaModel, Readonly<{ // id: string; // } & Record<string, any>>]> dataSubsObservable, ] = this.subscriptionsProcessor.start(); }Pero debido a que Electron ejecuta la aplicación en un entorno Node.js, es por eso que DataStore está deshabilitando el tiempo real.
Puede detener esto forzando a isNode a ser falso y luego en tiempo real funciona con electrones :)